package interfaces;

import classes.*;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.sql.Date;
import java.util.List;

/**
 * The Interface making up the group of related methods with empty bodies.
 * These are the methods implemented by the racappsrv server class in the racapp-server.
 * RemoteException is a number of communication-related exceptions that may occur during the execution of a remote method call.
 * Each method of a remote interface, an interface that extends java.rmi.Remote, must list RemoteException in its throws clause. 
 * @author keaneb1
 */
public interface Services extends Remote{
    
    public User doLogin(String username, String password) throws RemoteException;
    public List<String> getUniqueLocations() throws RemoteException;
    public List<String> getCategories() throws RemoteException;
    public List<Car> getCarsByLocationCategory(String location, String category, Date fromDate, Date toDate) throws RemoteException;
    public boolean insertNewBooking(Booking newBooking) throws RemoteException;
    public double getPricePerCategory(String category) throws RemoteException;
    public List<Customer> getCustomers(String searchString) throws RemoteException;
    public boolean insertNewCard(Card newCard) throws RemoteException;
    public boolean insertNewCustomer(Customer newCustomer) throws RemoteException;
    public int getBookingId(Booking newBooking) throws RemoteException;
    public boolean insertNewInvoice(Invoice newInvoice) throws RemoteException;
    
}
